Graphical user interface including palette windows with an improved search function

ABSTRACT

A system and method for searching for items in a hierarchy of palette windows and for incorporating located items into programs. Palette windows may include one or more palette window selection items that, when selected, open child palette windows of the current palette window. Palette windows may include one or more items for navigating in the hierarchy. A search mechanism for locating palette windows and/or palette window content may be provided. From the search mechanism, the user may locate and open palette windows in one or more hierarchies. The user may also incorporate palette window content into something, for example, a program being edited in a graphical programming environment. In one embodiment, the user may drag-and-drop palette window content onto a window being edited.

CONTINUATION DATA

[0001] This application is a Continuation-In-Part of U.S. utilityapplication Ser. No. 09/752,654 titled “Graphical User InterfaceIncluding Palette Windows with an Improved Navigation Interface” filedDec. 27, 2000, whose inventors were Justin Chickles and RaghavendraGururaj.

RESERVATION OF COPYRIGHT

[0002] A portion of the disclosure of this patent document containsmaterial to which a claim of copyright protection is made. The copyrightowner has no objection to the facsimile reproduction by anyone of thepatent document or the patent disclosure as it appears in the Patent andTrademark Office patent file or records, but reserves all other rightswhatsoever.

FIELD OF THE INVENTION

[0003] The present invention relates to the field of computer userinterface design, and in particular to an improved user interface forsearching for items in a hierarchy of palette windows and forincorporating located items into programs.

DESCRIPTION OF THE RELATED ART

[0004] A primary goal of a graphical user interface (GUI) is to providethe user the maximum amount of intuitiveness, familiarity andflexibility in navigating among the components of the GUI. Some GUIsinclude one or more palette windows which each contain a plurality ofitems that may be selected. For example, a user may select one or moreitems in a palette window for use in a user interface being created, forinclusion in a computer program being created, or for other purposes.Some GUIs also include a hierarchy of palette windows, wherein a palettewindow may include a palette window selection item that, when selected,displays a lower palette window (“child palette window”) in thehierarchy. A user may select a palette window selection item in apalette window to view a palette window lower in the hierarchy.

[0005] As one example, National Instruments' LabVIEW graphicalprogramming system includes a hierarchy of palette windows for enablinga user to select front panel controls and indicators for inclusion in afront panel or user interface being created. Similarly, the LabVIEWsystem also includes a hierarchy of palette windows for enabling a userto select nodes for inclusion in a graphical program block diagram beingcreated.

[0006] Prior art methods of accessing a hierarchy of palette windows foruse in selecting or adding items have generally relied on windowtechnology that displays multi-tiered, hierarchical windows, i.e., toplevel, level 1, level 2, level 3 windows, sub-windows, etc. Typically,when a lower-level window is selected from a higher-level window, atleast a portion of the higher-level window remains displayed on thedisplay screen. This method may be cumbersome for displaying windows foradding content items several levels deep in the hierarchy. In addition,there has been no mechanism provided for enabling a user to browse ahierarchy of palette windows in a browser-based fashion.

[0007] FIGS. 4A-4C illustrate a prior art method for accessing ahierarchy of palette windows. FIGS. 4A-4C illustrate a prior art exampleof a hierarchy of palette windows from the LabVIEW graphical programmingenvironment. Program elements, including user interface elements such ascontrols and indicators (e.g. ActiveX controls, buttons, switches,graphs, gauges, etc.), may be added to a software application underdevelopment by using the exemplary palette windows 100 as illustrated inFIGS. 4A-4C. Palette windows 100 as illustrated in FIG. 4A may includeone or more items which may include palette window selection items 108(for example, graph palette window selection item 108A of FIG. 4A), andpalette items. Exemplary palette items include program elements 112 (forexample, user interface element 112A of FIG. 4B), or utility items 110(for example, utility item 10A of FIG. 4A). Each item may include agraphical or textual indication of the type of item it is, and mayinclude graphical and/or textual indications of the palette window,program element, etc. that it represents.

[0008] Upon selecting palette window selection item 108A of palettewindow 100A, for example, by clicking or double-clicking the item, asecond palette window 100B is displayed as illustrated in FIG. 4B. Inthis example, palette window 100A may be described as a parent ofpalette window 100B, and palette window 100B as a child of palettewindow 100A. Palette window 100B may partially cover or overlap palettewindow 100A, which remains displayed. In this example, items in palettewindow 100B may be related to adding graph functionality to a programcurrently being created or modified.

[0009] Upon selecting palette window selection item 108B of palettewindow 100B, a third palette window 100C is displayed as illustrated inFIG. 4C. In this example, palette window 100B may be described as aparent of palette window 100C, and palette window 100C as a child ofpalette window 100B. In this example, items in palette window 100C maybe related to adding picture graphs to a program currently being createdor modified. In this example, user interface element 112B may be addedto a user interface window in a program currently being created ormodified, for example, by dragging and dropping the item on the userinterface window. Palette window 100C may also include one or morepalette window selection items 108, for example, item 108C, that, whenselected, may display further child palette windows 100 of palettewindow 100C. Note that previously opened palette windows 100 in thehierarchy remain displayed when a child palette window of a currentpalette window is opened. Also, by selecting other palette windowselection items 108 on one of the palette windows 100, other branches ofthe hierarchy of palette windows may be displayed.

[0010] Prior art methods also do not provide for easily locating aparticular item among a hierarchy of palette windows. For largerprograms, the hierarchy of palette windows may include several hundreditems. The prior art methods may be inadequate to allow the user tosearch through the items for a specific keyword or item name and tonavigate to a palette window including a desired item. The prior artmethods also may be inadequate in allowing the user to incorporatelocated items directly into a program being edited in the graphical userinterface. Therefore, it is desirable to provide an improved method ormethods for searching for items in a hierarchy of palette windows in agraphical user interface and for allowing located items to beincorporated directly into programs.

SUMMARY OF THE INVENTION

[0011] One embodiment of the present invention provides a system andmethod for presenting a graphical user interface (GUI) having one ormore hierarchies of palette windows, wherein the GUI includes animproved navigation interface for the palette windows. As used herein, apalette window may include the notion of a window (e.g. dialog window)displayed by a program which may include one or more items from which auser may select. A palette window may include palette items that may beselected by a user to add some functionality, capability or element to aprogram. A palette window may also include one or more palette windowselection items for selecting child palette windows in the hierarchy.The palette windows in the hierarchy preferably include an improvednavigation interface for navigating among windows in the hierarchy.

[0012] Embodiments of the present invention may be used in any ofvarious types of programs or applications which use a hierarchy (orhierarchies) of palette windows. One example where the invention may beused is a hierarchy of palette windows that include user interfaceelements that may be selected for inclusion in a graphical userinterface being created. Another example where the invention may be usedis a hierarchy of palette windows that include nodes that may beselected for inclusion in a graphical program being created. Thusexample applications that may use hierarchies of palette windows asdisclosed herein include, but are not limited to, programs for creatinga graphical user interface and programs for creating a graphicalprogram.

[0013] In one embodiment, a palette window in the hierarchy of palettewindows may be displayed or opened. In one embodiment the user maydirectly open a palette window through the application's user interface,such as by selecting a menu item. The palette window may also beautomatically opened when the user performs another function, such asopening a window to create something that uses palette items containedin the hierarchy of palette windows. For example, in creation of a GUI,when the user opens a blank GUI window to begin creating the GUI, aparent palette window in the hierarchy of palette windows may bedisplayed. As another example, in creation of a block diagram of agraphical program, when the user opens a blank block diagram window tobegin creating the block diagram, the parent palette window in thehierarchy of palette windows may be displayed.

[0014] Palette windows may include various items, including paletteitems and palette window selection items. Palette items may beselectable from a palette window to perform various program functions ormay be selectable for inclusion in something being created. As notedabove, palette window selection items may be selected to display childpalette windows in the hierarchy. Some palette windows in a hierarchymay comprise only palette window selection items. Other palette windows(e.g. the lowest palette windows in the hierarchy) may comprise onlypalette items and not include any palette window selection items. Otherwindows may comprise a combination of palette window selection items andother types of items. For example, in one embodiment of a graphicalprogramming application, palette windows may include palette windowselection items and may also include palette items that compriseselectable program elements such as user interface elements and/orfunction nodes. The user interface elements or program elements may beselected and added to user interface or block diagram windows of aprogram being created or edited. Unlike the palette items, the palettewindow selection items are not added to user interface or block diagramwindows when selected, but rather cause the display of lower level orchild palette windows.

[0015] In one embodiment, palette windows in the hierarchy may includeone or more navigation items for navigating among the hierarchy ofpalette windows. In one embodiment, the navigation items may becomprised in a navigation toolbar. In one embodiment, the navigationitems may include one or more of a back navigation item, a forwardnavigation item, and an up navigation item. The navigation items mayresemble “back” and “forward” arrows in a convention web browser. Thusthe navigation items may present a browser type interface for navigatingamong the hierarchy of palette windows, similar to a web browser.

[0016] In one embodiment, a mechanism for searching for palette windowsand/or palette window content (e.g. palette items such as programelements and palette window selection items) may be provided. In oneembodiment, a search window may be opened from any of the palettewindows in the hierarchy. The search window may provide an interface toallow the user to search for and locate palette windows and/or palettewindow content in the hierarchy. From the search window, the user maydirectly open located palette windows in the hierarchy. In embodimentsincluding more than one hierarchy of palette windows, the searchmechanism may allow a user to navigate from one hierarchy to another.For example, the user may open the search window from a first palettewindow in a first hierarchy, search for and locate a second palettewindow in a second hierarchy, and open the second palette window.

[0017] In one embodiment, palette items may be selectable from thesearch window to perform various program functions or may be selectablefor inclusion in something being created, for example, a program in agraphical programming environment. A search window may be displayed on acomputer display on which a program is being edited in the graphicaluser interface. A user may enter search criteria into the search window.The system may then search for and display located items indicated bythe search criteria. These located items may include one or more itemsrelated to program elements that may be incorporated in a program beingedited to add functionality to the program. The user may then select oneor more located program elements and incorporate the one or more programelements in one or more windows of the program being edited. In oneembodiment, a program element may be incorporated into the program byselecting the item and “dragging and dropping” the item on a window ofthe program. Other methods of incorporating items into programs may beused. Thus, the search results displayed in the search window mayinclude program elements that can be selected and incorporated directlyfrom the search window into a window of the program being edited.

[0018] One embodiment of the invention may thus provide a hierarchy ofpalette windows that may be navigated in a manner similar to a webbrowser, wherein at most one palette window in a hierarchy is displayedat one time, and navigation items may provide a web browser typeinterface. The navigation interface described herein also providesimproved navigation features over conventional web browsers, includingimproved search capabilities and improved browsing among and betweenhierarchies of panels.

BRIEF DESCRIPTION OF THE DRAWINGS

[0019] A better understanding of the present invention can be obtainedwhen the following detailed description of various embodiments isconsidered in conjunction with the following drawings, in which:

[0020]FIGS. 1A and 1B illustrate exemplary instrumentation andindustrial automation systems;

[0021]FIG. 2 illustrates a computer system block diagram according toone embodiment;

[0022]FIG. 3 is a block diagram illustrating the relationship ofportions of the instrumentation and industrial automation systemsaccording to one embodiment;

[0023] FIGS. 4A-4C illustrate a prior art method for navigating amongpalette windows;

[0024] FIGS. 5A-5E illustrate a method for navigating among a hierarchyof palette windows with graphical palette window selection itemsaccording to one embodiment;

[0025] FIGS. 6A-6C illustrate a method for navigating among a hierarchyof palette windows with textual palette window selection items accordingto one embodiment;

[0026] FIGS. 7A-7D illustrate a search window for locating palettewindows in a hierarchy of palette windows according to one embodiment;

[0027]FIGS. 8A and 8B illustrate exemplary palette windows with severalnavigation items for navigating among a hierarchy of palette windowsaccording to one embodiment;

[0028] FIGS. 9A-9C further illustrate exemplary palette windows withseveral navigation items for navigating among a hierarchy of palettewindows according to one embodiment; and

[0029]FIG. 10 illustrates a hierarchical organization of several palettewindows according to one embodiment;

[0030]FIG. 11 illustrates incorporating a located program element from asearch window into a window of a program being edited according to oneembodiment; and

[0031]FIG. 12 is a flowchart of a method of searching for, locating andincorporating program elements according to one embodiment.

[0032] While the invention is susceptible to various modifications andalternative forms, specific embodiments thereof are shown by way ofexample in the drawings and will herein be described in detail. Itshould be understood, however, that the drawings and detaileddescription thereto are not intended to limit the invention to theparticular form disclosed, but on the contrary, the intention is tocover all modifications, equivalents, and alternatives falling withinthe spirit and scope of the present invention as defined by the appendedclaims. Note, the headings are for organizational purposes only and arenot meant to be used to limit or interpret the description or claims.

DETAILED DESCRIPTION OF SEVERAL EMBODIMENTS

[0033] Embodiments of the present invention may be used in any ofvarious types of programs or applications that use one or morehierarchies of palette windows to provide a user interface for selectingamong various features or functions of the program or application.Embodiments of the invention may be used in an operating system, or inapplication programs. One exemplary application that may use a hierarchy(or hierarchies) of palette windows is an application for creating agraphical user interface (GUI). For example, the palette windows mayinclude different user interface elements that may be selected forinclusion in the GUI being created. As another example, the hierarchy ofpalette windows may include different application programs or functionsthat may be selected. For example, an operating system may include oneor more hierarchies of palette windows for selecting programs orfunctions within the operating system.

[0034] Another example application that may use a hierarchy (orhierarchies) of palette windows is a graphical programming developmentapplication. A graphical programming development application provides agraphical user interface (GUI) that enables users of the application tographically create and/or edit graphical computer programs. A graphicalprogram may include a block diagram and may optionally include a userinterface. In this example, one hierarchy of palette windows may includenodes that may be selected for inclusion in the block diagram, and asecond hierarchy of palette windows may include user interface elementsthat may be selected for inclusion in the user interface of thegraphical program.

[0035] An example of a graphical programming environment is NationalInstruments' LabVIEW, which provides a graphical user interface thatallows the user to create and/or edit graphical programs. LabVIEWincludes functionality targeted toward creation of graphical programs,referred to as virtual instruments (VIs), for instrumentation andautomation applications. The following describes an exemplary embodimentof the present invention used in a LabVIEW graphical programmingdevelopment system. Thus the exemplary systems shown below areinstrumentation and automation systems. Also, many of the screen shotsused to illustrate the embodiments are representative of graphicalprogramming environments similar to the LabVIEW graphical programmingenvironment. It is noted, however, that embodiments of the presentinvention may be applied to any computer-executable program that usesone or more hierarchies of palette windows. Also, embodiments of thepresent invention may be used in any of various applications, and arenot limited to instrumentation and automation applications.

[0036] FIGS. 1A and 1B—Instrumentation and Industrial Automation Systems

[0037]FIGS. 1A and 1B illustrate exemplary systems which may utilizesoftware according to one embodiment of the invention. FIGS. 1A and 1Billustrate systems targeted for instrumentation, industrial automation,or other purposes.

[0038]FIG. 1A illustrates an instrumentation control system 100. Thesystem 100 comprises a host computer 102, which connects to one or moreinstruments. The host computer 102 may comprise a CPU, a display,memory, and one or more input devices such as a mouse or keyboard asshown. The computer 102 may connect through the one or more instrumentsto analyze, measure, or control a unit under test (UUT) or process 150.The host computer 102 may store computer programs for creating orediting a graphical program, such as a graphical program, whichinteracts with or controls the one or more instruments.

[0039] The one or more instruments may include a GPIB instrument 112 andassociated GPIB interface card 122, a data acquisition board 114 andassociated signal conditioning circuitry 124, a VXI instrument 116, aPXI instrument 118, a video device 132 and associated image acquisitioncard 134, a motion control device 136 and associated motion controlinterface card 138, and/or one or more computer based instrument cards142, among other types of devices.

[0040] The instruments may be coupled to the unit under test (UUT) orprocess 150, or may be coupled to receive field signals, typicallygenerated by transducers. The system 100 may be used in a dataacquisition and control application, in a test and measurementapplication, a process control application, or a man-machine interfaceapplication.

[0041]FIG. 1B illustrates an exemplary industrial automation system 160.The industrial automation system 160 is similar to the instrumentationor test and measurement system 100 shown in FIG. 1A. Elements, which aresimilar or identical to elements in FIG. 1A, have the same referencenumerals for convenience. The system 160 comprises a computer 102, whichconnects to one or more devices or instruments. The computer 102 maycomprise a CPU, a display screen, memory, and one or more input devicessuch as a mouse or keyboard as shown. The computer 102 may connectthrough the one or more devices to a process or device 150 to perform anautomation function, such as MMI (Man Machine Interface), SCADA(Supervisory Control and Data Acquisition), portable or distributed dataacquisition, process control, advanced analysis, or other control. InFIG. 1B, the computer 102 may store computer programs for creating orediting a graphical program, such, such as a graphical program that isinvolved with the automation function performed by the automation system160.

[0042] The one or more devices may include a data acquisition board 114and associated signal conditioning circuitry 124, a PXI instrument 118,a video device 132 and associated image acquisition card 134, a motioncontrol device 136 and associated motion control interface card 138, afieldbus device 170 and associated fieldbus interface card 172, a PLC(Programmable Logic Controller) 176, a serial instrument 182 andassociated serial interface card 184, or a distributed data acquisitionsystem, such as the Fieldpoint system available from NationalInstruments, among other types of devices. The devices may be coupled tothe device or process 150.

[0043] In typical instrumentation and/or industrial automation systems adevice will not be present of each interface type, and in fact manysystems may only have one or more devices of a single interface type.

[0044] Referring again to FIGS. 1A and 1B, the computer system 102preferably includes a memory medium on which one or more computerprograms are stored. The one or more programs may include userinterfaces implementing one or more hierarchies of palette windows. Theone or more hierarchies of palette windows may include an improvednavigation interface according to one embodiment of the presentinvention. The improved navigation interface may provide browser-typenavigation items as described herein that may provide an interfacesimilar to an Internet web browser. The improved navigation interfacemay provide that at most one palette window in a hierarchy is displayedat one time, and may include improved search capabilities, among otherfeatures described herein.

[0045] The term “memory medium” is intended to include an installationmedium, e.g., a CD-ROM, floppy disks 104, or tape device, a computersystem memory or random access memory (RAM) such as DRAM, SRAM, EDO RAM,Rambus RAM, etc., or a non-volatile memory such as a magnetic media,e.g., a hard drive, or optical storage. The memory medium may compriseother types of memory as well, or combinations thereof.

[0046] In addition, the memory medium may be located in a first computerin which the programs are executed, or may be located in a seconddifferent computer, which connects to the first computer over a network,such as the Internet. In the latter instance, the second computerprovides the program instructions to the first computer for execution.Also, the computer system 102 may take various forms, including apersonal computer system, mainframe computer system, workstation,network appliance, Internet appliance, personal digital assistant (PDA),television system or other device. In general, the term “computersystem” can be broadly defined to encompass any device having at leastone processor, which executes instructions from a memory medium.

[0047] As noted above, in the exemplary embodiment described herein, theone or more hierarchies of palette windows include palette items used increating a graphical program. The graphical program that is created maybe designed for data acquisition/generation, analysis, and/or display,and for controlling or modeling instrumentation or industrial automationhardware. An exemplary graphical programming development system that maybe used to develop the graphical program is the National InstrumentsLabVIEW graphical programming application. LabVIEW provides specializedsupport for developers of instrumentation and industrial automationapplications.

[0048] However, it is noted that the present invention may be used in aplethora of applications and is not limited to graphical programmingapplications including instrumentation or industrial automationapplications. In other words, FIGS. 1A and 1B are exemplary only, andembodiments of the present invention may be used in any of various typesof systems or applications that use one or more hierarchies of palettewindows.

[0049]FIG. 2—Computer System Block Diagram

[0050]FIG. 2 is a block diagram of the exemplary computer systemillustrated in FIGS. 1A and 1B. It is noted that any type of computersystem configuration or architecture can be used as desired, and FIG. 2illustrates a representative PC embodiment. The elements of a computernot necessary to understand the present invention have been omitted forsimplicity.

[0051] The computer 102 includes at least one central processing unit orCPU 160 that is coupled to a processor or host bus 162. The CPU 160 maybe any of various types, including an x86 processor, e.g., a Pentiumclass, a PowerPC processor, a CPU from the SPARC family of RISCprocessors, as well as others. Main memory 166 is coupled to the hostbus 162 by means of memory controller 164.

[0052] The main memory 166 stores computer programs according to oneembodiment. More particularly, in this embodiment, the main memory 166may store a graphical programming development system which includes auser interface having one or more hierarchies of palette windows. Themain memory 166 also stores operating system software as well as othersoftware for operation of the computer system, as well known to thoseskilled in the art. The computer programs of one or more embodimentswill be discussed in more detail below.

[0053] The host bus 162 may be coupled to an expansion or input/outputbus 170 by means of a bus controller 168 or bus bridge logic. Theexpansion bus 170 of this embodiment may be the PCI (PeripheralComponent Interconnect) expansion bus, although other bus types can beused. The expansion bus 170 includes slots for various devices such asthe data acquisition board 114 (of FIG. 2A), a GPIB interface card 122which provides a GPIB bus interface to the GPIB instrument 112 (of FIG.2A), and a VXI or MXI bus card 186 coupled to the VXI chassis 116 forreceiving VXI instruments. The computer 102 further comprises a videodisplay subsystem 180 and hard drive 182 coupled to the expansion bus170.

[0054]FIG. 3—Graphical Programming Environment

[0055]FIG. 3 is a block diagram illustrating one embodiment of therelationship of portions of an exemplary instrumentation control system100 (of FIG. 1A) or the automation system 160 (FIG. 1B). The elementsshown in FIG. 3 (with the exception of the instrument hardware 54) maybe software elements, which are executed on the computer 102 (of FIGS.1A or 1B). The exemplary system described herein may be used to create agraphical program, or graphical program portion, to provide an interfaceto one or more instruments connected to the computer system on which theprogram is executed.

[0056] The block diagram editor 64 is operable to create a block diagramor VI 50, and the front panel editor 62 is operable to create a frontpanel or user interface. A graphical program comprises the block diagramand may also comprise the front panel. The block diagram editor 64communicates with the graphical program nodes 66, which in turncommunicate with the graphical programming development system 68. In asimilar manner, the front panel editor 62 communicates with the frontpanel controls 74, which in turn communicate with the graphicalprogramming development system 68.

[0057] A programmer may employ the front panel editor 62, the blockdiagram editor 64, and a connector pane/icon editor 72 of a graphicalprogramming system to produce a graphical program. In the exemplaryinstrumentation application, the graphical program may be referred to asa virtual instrument (VI) 50. The VI 50 may include one or more nodes orblocks that may be connected or coupled together as specified by theuser.

[0058] The graphical programming environment comprises one or moregraphical program nodes 66 that may be selected for inclusion in agraphical program block diagram. The block diagram editor 64 may includeone or more palette windows which include nodes 66 (or iconsrepresenting the nodes) that may be selected for inclusion in the blockdiagram being created. The block diagram editor 64 may also generateexecutable instructions, i.e., machine language instructions, inresponse to the VI 50. The VI 50 developed by the programmer is executedby an execution subsystem 56 of the graphical programming environment tocontrol an instrument 54. The instrument 54 is illustrative ofinstruments such as those of FIG. 1.

[0059] Referring again to FIG. 3, the graphical programming environmentfurther comprises one or more front panel controls or graphical userinterface (GUI) elements 74. The front panel editor 62 is operable togenerate a front panel or GUI using one or more of the controls 74. Thefront panel editor 62 may include one or more palette windows thatinclude user interface elements or controls 74 (icons representing thecontrols) that may be selected for inclusion in the front panel or userinterface being created.

[0060] The graphical programming environment may further comprise aconnector pane/icon editor 72 for forming VI's into subVI's, i.e., a VI50 that may be used as a graphical programming element in another VI.The reader is referred to U.S. Pat. No. 5,301,336 for more informationabout the subVI's and the icon editor 72.

[0061] The execution subsystem 56 executes the executable instructionsconstructed from a block diagram and/or front panel of the VI 50. Formore information about the graphical programming development system,please see U.S. Pat. No. 5,481,741, which is hereby incorporated byreference as though fully and completely set forth herein.

[0062] FIGS. 5A-10—Improved Palette Window Navigation

[0063] Various types of computer programs may include one or morehierarchies of palette windows comprising an embodiment of the inventionas described herein. For example, a software program may be launched toperform a task. The software program may display palette windows from ahierarchy of palette windows that provide a user interface to variousaspects of the program. In one embodiment, the software program may be agraphical programming application that allows the user to graphicallycreate and/or edit computer-executable programs. FIGS. 5A-10 illustratean exemplary graphical programming environment in which the variousaspects of the present invention may be implemented. It is noted,however, that the various aspects of the present invention may beapplied to any computer-executable program or application that uses oneor more hierarchies of palette windows.

[0064] In one embodiment, one or more palette windows may be openedautomatically in response to a program action, such as the opening of awindow related to the elements in the palette windows. For example, inthe exemplary graphical programming environment, opening a userinterface window and/or a function block diagram window may result inone or more palette windows being automatically opened. Alternatively,the user may open palette windows through an application's userinterface, for example, by choosing a menu item to select and/or displayone or more palette windows.

[0065] An exemplary graphical programming application may open one ormore windows, which may include user interface windows and/or blockdiagram windows, upon launch of the application. Alternatively, userinterface windows and/or block diagram windows may be opened by the usersubsequent to the launching of the application using the application'suser interface. A user may add, delete or modify various user interfaceelements in a user interface window. User interface elements, e.g.controls and indicators, may represent or display various inputs andoutputs of the graphical program, and/or may represent interfaces toitems, for example, device interfaces in a virtual instrument (VI)program. The user interface window may also include user interfaceelements that, when selected, open or display one or more other userinterface windows for accessing other aspects of the graphical program.

[0066] A block diagram window may include one or more function nodes orprogram elements, such as terminals, that may correspond to userinterface elements in a user interface window and nodes that embody afunction. The nodes or function elements may represent executablefunctions or executable software modules. The nodes or function elementsmay be interconnected or “wired up” to visually indicate functionalityof the graphical program, wherein the nodes perform various operationsduring execution of the graphical program.

[0067] A palette window may include palette items (also called “programelements”) and palette window selection items.

[0068] Palette items may be selectable to perform various programfunctions, e.g., palette items may be selected to display thecorresponding icon in a window or may be selected to perform a desiredfunction. Palette items may be represented graphically or as text items,for use in constructing windows, for example, graphical user interfacewindows and block diagram windows. In one embodiment, a palette item maybe placed on a window by selecting the item in a palette window, and“dragging and dropping” the item on the window. Other methods of addingitems to windows may be used. For example, in one embodiment, a user mayselect an item in a palette window, and a menu choice may then beselected to add the selected item to a window.

[0069] In a hierarchy of palette windows used in creating a graphicaluser interface in the graphical user interface window, the palette itemsin the palette windows may include user interface elements to bedisplayed in the graphical user interface window. In one embodiment,user interface elements may be classified into two main groups: control(input) items, and indicator (output) items. Some items may support bothinput and output. Examples of control and indicator items that may beincluded in a palette window include, but are not limited to: Booleaninterface items such as switches and buttons; 2- and 3-dimensionalgraphs and charts; textual items such as text fields, lists and tables;and numeric interface items such as gauges, digital controls, analogcontrols such as knobs, etc.

[0070] In a hierarchy of palette windows used in creating a blockdiagram in the block diagram window, the palette items in the palettewindows may include functions nodes (also called function elements orprimitives) to be displayed in the block diagram window. Examples oftypes of function elements may include, but are not limited to: programstructures such as for and while loops, case statements, and global orlocal variables; operators such as numeric (addition, multiplication,etc.), comparison (equal to, greater than, etc) and logical (AND, OR,XOR, etc) operators; file I/O items; signal or waveform processingfunction elements; complex mathematical function elements; instrumentdriver items; communications items; and graphical or sound items.

[0071] Some embodiments may include a plurality of hierarchies ofpalette windows. For example, in the exemplary graphical programmingenvironment, a first hierarchy may include user interface elements foruse in creating a user interface, and a second hierarchy may includefunction elements or nodes for use in creating a block diagram.

[0072] Individual palette windows may include related groups ofelements. For example, in the exemplary graphical programmingenvironment, in the first hierarchy a first palette window may includegraph and chart user interface elements, a second palette window mayinclude Boolean user interface elements, and a third palette window mayinclude digital user interface elements, etc. In a similar manner, inthe second hierarchy a first palette window may include numeric operatorfunction elements, a second palette window may include signal processingfunction elements, and a third palette window may include Booleanoperator elements, etc.

[0073] Palette window selection items in a palette window may beselected to display a lower level palette window in the hierarchy. Thus,palette window selection items are one mechanism for navigating amongthe hierarchy of palette windows. In one embodiment, a first palettewindow may include one or more palette window selection items that, whenselected, open a second palette window that may be referred to as achild of the first (parent) palette window. When the child palettewindow is opened, the parent (current) palette window may beautomatically closed. Thus, in one embodiment, at most one palettewindow in a hierarchy is displayed at one time.

[0074] Thus, unlike palette items or program elements that may beselected to perform a function, such as being selected to be added to awindow, the palette window selection items are selected primarily (oronly) for the purpose of displaying lower level palette windows in thehierarchy.

[0075] Some palette windows in a hierarchy may comprise only palettewindow selection items. For example, the “root” or top-level palettewindow may include only palette window selection items for selectingother palette windows to be displayed. Other palette windows (e.g. thelowest palette windows in the hierarchy) may comprise only palette itemsand may not include any palette window selection items. Yet otherwindows may comprise a combination of palette window selection items andpalette items. For example, in one embodiment of a graphical programmingapplication, palette windows may include palette window selection itemsand palette items representing selectable program elements such as userinterface elements and/or function elements.

[0076] In one embodiment, the palette window selection items may includean indicator to distinguish these selection items from palette items orother items in the palette window. For example, a selection item mayinclude a graphical indicator, such as an arrow, that identifies theitem as a palette window selection item that references a lower levelpalette window.

[0077] Palette Window Navigation Items

[0078] In one embodiment of the invention, palette windows in ahierarchy may include one or more navigation items for navigating amongthe hierarchy of palette windows. In one embodiment, the navigationitems may be comprised in a navigation toolbar. The navigation toolbarmay be displayed at the top of each palette window. In one embodiment,the navigation items may include one or more of a back navigation item,a forward navigation item, and an up navigation item. In one embodiment,the back navigation item may be represented as a back arrow, the forwardnavigation item may be represented as a forward arrow, and the upnavigation item may be represented as an up arrow.

[0079] The back navigation item may be operable when selected to open ordisplay a most recently previously displayed palette window in abackward direction. The forward navigation item may be operable whenselected to open or display a most recently previously displayed palettewindow in a forward direction. The up navigation item may be operablewhen selected to open or display a parent palette window of the currentpalette window, regardless of the most recently previously displayedpalette window. Various other navigation items may be included whichperform other types of navigation.

[0080] The navigation items may be used in navigating to previouslydisplayed (or nonpreviously displayed) palette windows and other windowsin the program. In one embodiment, a navigation item may be used to listand optionally select from the palette windows that are higher in thehierarchy of palette windows than the currently displayed palettewindow. In another embodiment, a navigation item may be used to list andoptionally select from the palette windows that are lower in thehierarchy of palette windows than the currently displayed palettewindow.

[0081] When a palette window is opened or displayed using one of thenavigation items, the current palette window is closed or no longerdisplayed. Thus, in one embodiment, at most one palette window in ahierarchy is displayed at one time. For example, when a previouslydisplayed palette window, or one higher in the hierarchy, is openedusing one of the navigation items, the current palette window is closedor no longer displayed.

[0082] In one embodiment, when there is no previously displayed palettewindow from the current palette window, or when there is no palettewindow higher (or lower) in the hierarchy than the current window, oneor more of the navigation items may be disabled.

[0083] In one embodiment, a mechanism for searching for palette windowsand/or palette window content (e.g. program elements and palette windowselection items) may be provided. In one embodiment, a search window maybe opened from any palette window in the hierarchy. The search windowmay provide an interface to allow the user to search for and locatepalette windows and/or palette window content in the hierarchy ofpalette windows. From the search window, the user may directly openlocated palette windows in the hierarchy. The various navigation itemsmay still operate after a search to return to the previously displayedpalette window in which the search originated. In one embodiment, thesearch window may also include one or more navigation items operablewhen selected to open or display previously displayed palette windowsfrom the search window.

[0084] FIGS. 5A-5E—Navigating Among a hierarchy of Palette Windows

[0085] FIGS. 5A-5E illustrate an exemplary graphical user interface (ofa graphical programming environment) used to illustrate variousembodiments of a method for navigating among a hierarchy of palettewindows using graphical palette window selection items. It is noted,however, that the various aspects of the present invention illustratedin this example may be applied to any computer-executable program orapplication that uses one or more hierarchies of palette windows.

[0086] In the exemplary graphical programming environment, programelements (also called “palette items”) may be added to windows (e.g.block diagram or user interface windows of a program currently beingcreated or modified in the exemplary graphical programming application)from the hierarchies of palette windows 200 as illustrated in FIGS.5A-5E. The program elements may be represented as graphical objects inthe palette windows 200.

[0087] Palette windows 200 as illustrated in FIGS. 5A-5E may include apalette 204 of one or more graphical items which may include palettewindow selection items 208 (for example, graph palette window selectionitem 208A of FIG. 5A), program elements 212 (for example, user interfaceelement 212A of FIG. 5C), and utility items 210 (for example, utilityitem 210A of FIG. 5A for displaying an interface for selecting customcontrols). Each item may include a graphical or textual indication ofthe type of item it is, and may include graphical and/or textualindications of the palette window, program element, etc. that itrepresents. In the palette windows 200 illustrated in FIGS. 5A-5E, atriangle or arrow at the upper right corner of an item may indicate thatthe item is a palette window selection item 208, an ellipsis at thebottom of an item may indicate that the item is a utility item 210, andthe absence of an indicator may indicate that the item is a programelement 212. Other embodiments may include other types of items. Otherembodiments may also use other graphical or textual indicators foridentifying item types to users.

[0088] In one embodiment as illustrated in FIG. 5B, when a user selectsan item, for example, by moving cursor 226 over the item, a descriptionof the item may be displayed in the palette window. In this example,“Graph” appears above the items in the palette 204 for selected palettewindow selection item 208A, indicating that a palette window associatedwith item 208A may include one or more items related to adding graphfunctionality to a program. Upon selecting palette window selection item208A of palette window 200A, for example, by clicking or double-clickingthe item, a second palette window 200B is displayed as illustrated inFIG. 5C, and palette window 200A is closed. In this example, palettewindow 200A may be described as a parent of palette window 200B, andpalette window 200B as a child of palette window 200A. In this example,items in palette window 200B may be related to adding graphfunctionality to a program currently being created or modified.

[0089] Upon selecting palette window selection item 208B of palettewindow 200B as illustrated in FIG. 5D, a third palette window 200C isdisplayed as illustrated in FIG. 5E, and palette window 200B is closed.In this example, palette window 200B may be described as a parent ofpalette window 200C, and palette window 200C as a child of palettewindow 200B. In this example, items in palette window 200C may berelated to adding picture graphs to a program currently being created ormodified. For example, user interface element 212B may be added to auser interface window in a program currently being created or modified,for example, by dragging and dropping the item on the user interfacewindow. Palette window 200C may also include one or more palette windowselection items 208, for example, item 208C, which display child palettewindows 200 of palette window 200C when selected. By selecting otherpalette window selection items 208 on one of the palette windows 200 asillustrated in FIGS. 5A-5E, other branches of the hierarchy of palettewindows may be displayed.

[0090] Note that, unlike prior art palette windows, previously openedpalette windows 200 in the hierarchy are not displayed when a childpalette window of a current palette window is displayed. Thus, in thepresent invention, there is no limitation imposed by keeping palettewindows open as there is for the palette windows as illustrated in FIGS.4A-4D. This operates to present more of a web browser type interface.

[0091] Palette windows 200 as illustrated in FIGS. 5A-5E may alsoinclude one or more navigation items for navigating among the hierarchyof palette windows 200. FIG. 5A illustrates one embodiment of a palettewindow 200A with several navigation items comprised in a navigationtoolbar 214. The navigation items in this embodiment may include one ormore of a back navigation item 216, a forward navigation item 218, andan up navigation item 220. In one embodiment, palette windows 200 mayalso include a back navigation menu item 217, a forward navigation menuitem 219, and an up navigation menu item 221.

[0092] After using the palette window selection items 208 to display twoor more palette windows as described above for FIGS. 5A-5E, the back andforward navigation items 216 and 218 may be used to navigate topreviously displayed palette windows in a backward and forwarddirection. For example, the selection of back navigation item 216 ofpalette window 200C of FIG. 5E causes palette window 200B of FIG. 5C(the most recently displayed palette window in a backward direction) tobe displayed, and palette window 200C to be closed. Subsequentlyselecting back navigation item 216 of palette window 200B of FIG. 5Ccauses palette window 200A of FIG. 5A (the next previously displayedpalette window in the backward direction) to be displayed and palettewindow 200B to be closed.

[0093] From palette window 200A, forward navigation item 218 may then beselected to display palette window 200B of FIG. 5C (the most recentlydisplayed palette window in the forward direction) and close palettewindow 200A. Subsequently selecting forward navigation item 218 frompalette window 200B of FIG. 5C results in palette window 200C of FIG. 5E(the next palette window in the forward direction) being displayed, andpalette window 200B being closed.

[0094] After using the palette window selection items 208 to display twoor more palette windows as illustrated in FIGS. 5A-5E, the back andforward navigation menu items 217 and 219 may also be used to navigateto previously displayed palette windows in a backward and forwarddirection. Selecting a navigation menu item may result in the display ofa menu including menu items for one or more previously displayed palettewindows 200. Selecting a menu item for one of the palette windows 200from the menu causes the selected palette window 200 to be displayed andthe currently displayed palette window 200 to be closed.

[0095] For example, the selection of back navigation menu item 217 ofpalette window 200C of FIG. 5E may display a menu including menu itemsfor all previously displayed palette windows in a backward direction (inthis example, palette window 200B of FIG. 5C and palette window 200A ofFIG. 5A). Selecting the menu item for palette window 200A from the menucauses palette window 200A to be displayed and palette window 200C to beclosed. Subsequently selecting the forward navigation menu item 219 ofpalette window 200A of FIG. 5A may display a menu including menu itemsfor all previously displayed palette windows in a forward direction (inthis example, palette window 200B of FIG. 5C and palette window 200C ofFIG. 5E). Selecting the menu item for palette window 200B from the menucauses palette window 200B to be displayed and palette window 200A to beclosed.

[0096] The up navigation item 220 may be used to navigate to palettewindows higher in the hierarchy of palette windows than the currentlydisplayed palette window. For example, the selection of up navigationitem 220 of palette window 200C of FIG. 5E causes palette window 200B ofFIG. 5C (the parent palette window of palette window 200C) to bedisplayed, and palette window 200C to be closed. Subsequently selectingup navigation item 220 of palette window 200B of FIG. 5C causes palettewindow 200A of FIG. 5A (the parent palette window of palette window200B) to be displayed and palette window 200B to be closed. Note that,in this example, if palette window 200A is the root palette window (i.e.has no parent) then selecting up navigation item 220 of palette window200A will have no effect.

[0097] The up navigation menu item 221 may also be used to navigate topalette windows higher in the hierarchy of palette windows than thecurrently displayed palette window. For example, the selection of upnavigation menu item 221 of palette window 200C of FIG. 5E may display amenu including menu items for all palette windows higher in thehierarchy than palette window 200C (in this example, palette window 200Bof FIG. 5C and palette window 200A of FIG. 5A). Selecting the menu itemfor one of the palette windows 200 from the menu causes the selectedpalette window 200 to be displayed and palette window 200C to be closed.

[0098] In one embodiment, palette windows 200 may also include a searchitem 222. In one embodiment, palette windows 200 may also include anitem 224 that, when selected, displays a user interface for changing theconfiguration, display characteristics, etc. of palette windows in thehierarchy. In one embodiment, the user interface may allow the user totoggle the palette window to display items in palette windows in eithertextual format (as illustrated in FIG. 6A), graphical format (asillustrated in FIG. 5A) or optionally in a combination of graphical andtextual. In one embodiment, the user interface may also allow palettewindow selection items 208 to be added to and/or removed from palettewindows 204, thus providing a method for the user to modify thehierarchy of palette windows.

[0099] FIGS. 6A-6C—Palette Windows with Text Palette Window SelectionItems

[0100] FIGS. 6A-6C illustrate an exemplary graphical programmingenvironment used to illustrate various embodiments of a method fornavigating among a hierarchy of palette windows using textual palettewindow selection items. It is noted, however, that the various aspectsof the present invention illustrated in this example may be applied toany computer-executable program or application that uses one or morehierarchies of palette windows.

[0101] In the exemplary graphical programming environment, programelements may be added to windows (e.g. a functional or user interfacewindows of a program currently being created or modified) from hierarchyof palette windows 240 with textual palette window selection items asillustrated in FIGS. 6A-6C. The program elements may be represented astext objects in the palette windows 240.

[0102] Palette windows 240 as illustrated in FIGS. 6A-6C may include alist 242 of one or more text items including palette window selectiontext items 244 (for example, graph palette window selection text item244A of FIG. 6A), program elements 248 (for example, user interfaceelement 248A of FIG. 6C), and utility items 246 (for example, utilityitem 246A of FIG. 6A).

[0103] In one embodiment as illustrated in FIG. 6B, when a user selectsa text item from the list 242, for example, by moving cursor 226 overthe text item, the text item may be highlighted. In this example, theselected palette window selection text item 244A “Graph” is highlighted.Upon selecting palette window selection text item 244A of palette window240A, for example, by clicking or double-clicking the item, a secondpalette window 240B is displayed as illustrated in FIG. 6C, and palettewindow 240A is closed. In this example, palette window 240A may bedescribed as a parent of palette window 240B, and palette window 240B asa child of palette window 240A.

[0104] In this example, items in palette window 240B may be related toadding charts and graphs to a program currently being created ormodified. For example, user interface element 248A may be added to auser interface window in a program currently being created or modified,for example, by dragging and dropping the item on the user interfacewindow. Palette window 240B may also include one or more palette windowselection text items 244, for example item 244B, which display childpalette windows 240 of palette window 24B when selected. By selectingother palette window selection text items 244 on one of the palettewindows 240 as illustrated in FIGS. 6A-6C, other branches of thehierarchy of palette windows may be displayed.

[0105] Palette windows 240 as illustrated in FIGS. 6A-6C may alsoinclude one or more navigation items for navigating among the hierarchyof palette windows 240. FIG. 6A illustrates one embodiment of a palettewindow 240A with several navigation items comprised in a navigationtoolbar 214. The navigation items in this embodiment may include backnavigation item 216, forward navigation item 218, and up navigation item220. In one embodiment, palette windows 240 may also include backnavigation menu item 217, forward navigation menu item 219, and upnavigation menu item 221.

[0106] After using the palette window selection items 208 to display twoor more palette windows as described above for FIGS. 6A-6C, the back andforward navigation items 216 and 218 may be used to navigate topreviously displayed palette windows in a backward and forwarddirection. For example, the selection of back navigation item 216 ofpalette window 240B of FIG. 6C causes palette window 240A of FIG. 6A(the most recently displayed palette window in a backward direction) tobe displayed, and palette window 240B to be closed. From palette window240A, forward navigation item 218 may then be selected to displaypalette window 240B of FIG. 6C (the most recently displayed palettewindow in the forward direction) and close palette window 240A.

[0107] After using the palette window selection items 208 to display twoor more palette windows as illustrated in FIGS. 6A-6C, the back andforward navigation menu items 217 and 219 may also be used to navigateto previously displayed palette windows in a backward and forwarddirection. Selecting a navigation menu item may result in the display ofa menu including menu items for one or more previously displayed palettewindows 240. Selecting a menu item for one of the palette windows 240from the menu causes the selected palette window 240 to be displayed andthe currently displayed palette window 240 to be closed.

[0108] For example, the selection of back navigation menu item 217 ofpalette window 240B of FIG. 6C may display a menu including menu itemsfor all previously displayed palette windows in a backward direction (inthis example, palette window 240A of FIG. 6A). Selecting the menu itemfor palette window 240A from the menu causes palette window 240A to bedisplayed and palette window 240B to be closed. Subsequently selectingthe forward navigation menu item 219 of palette window 240A of FIG. 6Amay display a menu including menu items for all previously displayedpalette windows in a forward direction (in this example, palette window240B of FIG. 6C). Selecting the menu item for palette window 240B fromthe menu causes palette window 240B to be displayed and palette window240A to be closed.

[0109] The up navigation item 220 may be used to navigate to palettewindows higher in the hierarchy of palette windows than the currentlydisplayed palette window. For example, the selection of up navigationitem 220 of palette window 240B of FIG. 6C causes palette window 240A ofFIG. 6A (the parent palette window of palette window 240B) to bedisplayed, and palette window 240B to be closed. Note that, in thisexample, if palette window 240A is the root palette window (i.e. has noparent) then selecting up navigation item 220 of palette window 240Awill have no effect.

[0110] The up navigation menu item 221 may also be used to navigate topalette windows higher in the hierarchy of palette windows than thecurrently displayed palette window. For example, the selection of upnavigation menu item 221 of palette window 240B of FIG. 6C may display amenu including menu items for all palette windows higher in thehierarchy than palette window 240B (in this example, palette window 240Aof FIG. 6A). Selecting the menu item for palette window 240A from themenu causes the selected palette window 240A to be displayed and palettewindow 240B to be closed.

[0111] In one embodiment, palette windows 240 may also include searchitem 222. In one embodiment, palette windows 240 may also include anitem 224 that, when selected, displays a user interface for changing theconfiguration, display characteristics, etc. of palette windows in thehierarchy. In one embodiment, the user interface may allow the user totoggle the palette window to display items in the palette windows ineither textual format (as illustrated in FIG. 6A) or graphical format(as illustrated in FIG. 5A). In one embodiment, the user interface mayalso allow palette window selection text items 244 to be added to and/orremoved from list 242, thus providing a method for a user to modify thehierarchy of palette windows.

[0112] FIGS. 7A-7D—A Search Window for Locating Palette Windows in aHierarchy

[0113] FIGS. 7A-7D illustrate an exemplary graphical user interface (ina graphical programming development environment application) with asearch window 300 for locating palette windows and palette windowcontent in a hierarchy of palette windows according to one embodiment.It is noted, however, that the various aspects of the present inventionillustrated in this example may be applied to any computer-executableprogram or application that uses one or more hierarchies of palettewindows.

[0114] In one embodiment, palette windows such as those illustrated inFIGS. 5A and 6A may include a search item 224 that, when selected,displays search window 300. For example, a user may select search item244 from palette window 200A of FIG. 5A, resulting in search window 300of FIG. 7A being displayed. In one embodiment, the palette window fromwhich the search window 300 was selected may be automatically closedwhen the search window 300 opens.

[0115] Search window 300 may also include one or more navigation itemsfor navigating among the hierarchy of palette windows. FIG. 7Aillustrates one embodiment of a search window 300 with severalnavigation items comprised in a navigation toolbar 214. The navigationitems in this embodiment may include back navigation item 216, forwardnavigation item 218, and up navigation item 220. In one embodiment,search window 300 may also include back navigation menu item 217,forward navigation menu item 219, and up navigation menu item 221.

[0116] Search window 300 may also include a search field 302 configuredto accept user input for searching for palette windows and/or palettewindow content. Search window 300 may also include a list 306 of textentries or strings that may include palette window titles and programelement names. In one embodiment, the text entries in list 306 may be inalphabetical order. Search window 300 may also include a scroll bar 308for viewing hidden portions of list 306. In one embodiment, if the textentries currently in list 306 are all visible within search window 300,the scroll bar may be hidden or disabled. Search window 300 may alsoinclude interface items 304 for modifying aspects of searches forstrings in the list of text entries. In this example, two interfaceitems 304 are shown that allow a user to toggle between searching fortext entries beginning with a search string and searching for textentries including a search string.

[0117] FIGS. 7B-7D illustrate using search window 300 to locate content(e.g. program objects) and/or palette windows. In FIG. 7B, a user mayenter a text string in search field 302. In this example, the user mayenter the string “Recta” in search field 302, and the list 306 ofentries is reduced to entries including the entered string. In FIG. 7C,the user may enter the string “Rectangle” in search field 302, and thelist 306 is reduced to the one entry including the entire enteredstring. Note that if the user enters a string that is not included inany entries in list 306, then the displayed list of entries may beempty.

[0118] The user may select a text entry, e.g. by clicking ordouble-clicking on a text entry in the list 306, to display a palettewindow associated with the entry. For example, in FIG. 7C, the user mayselect (e.g. click on) the entry “Rectangle.ctl”, and the “Datatypes”palette window 200D illustrated in FIG. 7D may be displayed. Palettewindow 200D includes the program element “Rectangle.ctl” 212Ccorresponding with the “Rectangle.ctl” text entry in list 306 of searchwindow 300 selected by the user. In one embodiment, if the palettewindows are currently in text display mode, the items in the “Datatypes”palette window are displayed in text format similar to the items in thepalette window 240A as illustrated in FIG. 6A.

[0119] In one embodiment, the search window 300 may be closed when apalette window is displayed. Alternatively, the user may open a palettewindow from a list 306 including more than one text entry in searchwindow 300 (for example, search window 300 as shown in FIGS. 7A and 7B)by selecting a text entry associated with the palette window from thelist 306, for example, by moving the cursor over the item and clickingor double-clicking it.

[0120] In one embodiment, list 306 of search window 300 may include oneor more palette items. Palette items displayed in list 306, similar topalette items in palette windows, may be selectable to perform variousprogram functions, e.g., palette items may be selected to display thecorresponding icon in a window being constructed, for example, graphicaluser interface windows and block diagram windows, or may be selected toperform a desired function. In one embodiment, a palette item may beplaced on a window by selecting the item in list 306 and “dragging anddropping” the item on the window. Other methods of adding items fromlist 306 to windows may be used. For example, in one embodiment, a usermay select an item in list 306 and a menu choice may then be selected toadd the selected item to a window. Thus, the search results displayed inthe search window may include palette items (e.g., icons) that can beselected, such as through a drag and drop method, directly from thesearch window, in a similar manner to which the palette item may beselected from its respective palette window.

[0121] FIGS. 8A and 8B—An Exemplary Palette Window with Navigation Items

[0122]FIGS. 8A and 8B illustrate a palette window in an exemplarygraphical programming environment with navigation items for navigatingamong a hierarchy or hierarchies of palette windows according to oneembodiment. It is noted, however, that the various aspects of thepresent invention illustrated in this example may be applied to anycomputer-executable program or application that uses a hierarchy orhierarchies of palette windows.

[0123] Palette windows 200D as illustrated in FIGS. 8A-8B may includeone or more navigation items for navigating among the hierarchy ofpalette windows. The navigation items may be comprised in a navigationtoolbar 214. The navigation items in this embodiment may include a backnavigation item 216, a forward navigation item 218, and an up navigationitem 220. In one embodiment, palette window 200D may also include a backnavigation menu item 217, a forward navigation menu item 219, and an upnavigation menu item 221.

[0124] When navigating among a hierarchy of palette windows asillustrated in FIGS. 5, 6, and 7, a user may generate a history ofpreviously displayed windows. FIG. 8A illustrates using a backnavigation item 216 to display a list 230A of, and optionally selectfrom, previously displayed windows. Any of several methods may be usedto display the list 230A. In one embodiment, the user may move cursor226 over item 216 and click-hold (e.g. hold down the mouse button) for ashort period until the list 230A is displayed. In one embodiment, theuser may select back navigation menu item 217 to display the list 230A,for example, by clicking on it. The user may open one of the palettewindows in list 230A by selecting one of the items in list 230A. Forexample, the user might move the cursor over and click on “Graph” in thelist 230A to display the “Graph” palette window 200B as illustrated inFIG. 5C.

[0125] In one embodiment, the windows in the list 230A may be shown inorder from the most recently to the least recently previously displayedwindow. In other embodiments, other methods of ordering windows in list230A may be used. Depending on the sequence of navigation that the userhas previously performed, the palette windows in the list may or may notbe in a hierarchical, parent-child arrangement, where the immediateparent of the currently displayed palette window is the most recentlypreviously displayed palette window. In the example as illustrated inFIG. 8A, “Picture” is the parent of “Datatypes”, “Graph” is the parentof “Picture”, and “Controls” is the parent of “Graph”. If the user haspreviously navigated up and/or down other branches of the hierarchy orhas used the search window 300 to “jump” to palette windows in otherhierarchies or branches, then the palette windows may not be in a purelyhierarchical arrangement in list 230A.

[0126] In one embodiment, the most recently previously displayed windowin a backward direction may be displayed by selecting back navigationitem 216 without displaying or selecting from a menu. In one embodiment,single-clicking on back navigation item 216 may select the backnavigation item. In this example, selecting back navigation item 216 ofpalette window 200D may display the “Picture” palette window 200C asillustrated in FIG. 5E.

[0127]FIG. 8B illustrates using an up navigation item 220 to display alist 230B of, and optionally select from, palette windows above thecurrently displayed palette window 200D on this branch of the hierarchyof palette windows, and optionally up to the root (first) palette windowin the hierarchy. Any of several methods may be used to display the list230B. In one embodiment, the user may move cursor 226 over item 220 andclick-hold (e.g. hold down the mouse button) for a short period untilthe list 230B is displayed. In one embodiment, the user may select upnavigation menu item 221 to display the list 230B, for example, byclicking on it. The user may open one of the palette windows byselecting one of the items in list 230B. For example, the user mightmove the cursor over and click on “Controls” in the list 230B to displaythe “Controls” palette window 200A as illustrated in FIG. 5A. The“Controls” palette window may be considered the root palette window inthis hierarchy. Note that there may be other hierarchies reachablethrough the search window or by opening other windows in the graphicalprogramming application that display palette windows in the otherhierarchies when opened.

[0128] In one embodiment, the palette windows in the list 230B may beshown in order from the immediate parent palette window of the currentlydisplayed palette window to the root palette window of this hierarchy.In other embodiments, other methods of ordering palette windows in list230B may be used. In the example as illustrated in FIG. 8B, “Picture” isthe parent of “Datatypes”, “Graph” is the parent of “Picture”, and“Controls” is the parent of “Graph”.

[0129] In one embodiment, the parent palette window of the currentlydisplayed palette window may be displayed by selecting up navigationitem 220 without displaying or selecting from a menu. In one embodiment,single-clicking on up navigation item 220 may select the up navigationitem. In this example, selecting up navigation item 220 of palettewindow 200D may display the “Picture” palette window 200C as illustratedin FIG. 5E, which is the parent palette window of palette window 200D.

[0130] FIGS. 9A-9C—A Second Exemplary Palette Window with NavigationItems

[0131] FIGS. 9A-9C illustrate a second palette window 200E in anexemplary graphical programming environment with several navigationitems for navigating among a hierarchy of palette windows according toone embodiment to highlight other aspects of using the navigation items.It is noted, however, that the various aspects of the present inventionillustrated in this example may be applied to any computer-executableprogram or application that uses a hierarchy or hierarchies of palettewindows.

[0132] Palette window 200E as illustrated in FIGS. 9A-9C may include oneor more navigation items for navigating among the hierarchy of palettewindows, as well as for opening previously displayed windows in theprogram. The navigation items may be comprised in a navigation toolbar214. The navigation items in this embodiment may include a backnavigation item 216, a forward navigation item 218, and an up navigationitem 220. In one embodiment, palette window 200E may also include a backnavigation menu item 217, a forward navigation menu item 219, and an upnavigation menu item 221.

[0133] When navigating among a hierarchy of palette windows asillustrated in FIGS. 5, 6, and 7, a user may generate a history ofpreviously displayed windows. FIG. 9A illustrates using a backnavigation item 216 to display a list 230C of, and optionally selectfrom, previously displayed palette windows and/or other windows. Any ofseveral methods may be used to display the list 230C. In one embodiment,the user may select back navigation menu item 217 to display the list230C, for example, by clicking on it. The user may then open apreviously displayed window by selecting one of the items in list 230C.For example, the user might move the cursor over and click on “(search)”in the list 230C to display the search window 300 as illustrated in FIG.7A. As another example, the user might select “Datatypes” from list 230Cto open the Datatypes palette window as illustrated in FIG. 8A.

[0134] In one embodiment, the most recently previously displayed windowin a backward direction may be displayed by selecting back navigationitem 216 without displaying or selecting from a menu. In one embodiment,single-clicking on back navigation item 216 may select the backnavigation item and thus display the most recently previously displayedwindow. In this example, selecting back navigation item 216 of palettewindow 200E may display the “Search” window 300 as illustrated in FIG.7A.

[0135]FIG. 9B illustrates using an up navigation item 220 to display alist 230D of, and optionally select from, palette windows above thecurrently displayed palette window 200E on this branch of the hierarchyof palette windows, and optionally up to the root (first) palette windowin the hierarchy. Any of several methods may be used to display the list230D. In one embodiment, the user may select up navigation menu item 221to display the list 230D, for example, by clicking on it. The user maydisplay a palette window higher in the hierarchy than the currentpalette window by selecting one of the items in list 230D. For example,the user might move the cursor over and click on “Functions” in the list230D to display the “Functions” palette window. In this example, the“Functions” palette window may be the root palette window in a hierarchyof palette windows for adding function elements to graphical programs.

[0136] In one embodiment, the palette windows in the list 230D may beshown in order from the immediate parent palette window of the currentlydisplayed palette window to the root palette window of this hierarchy.In other embodiments, other methods of ordering palette windows in list230D may be used. In the example as illustrated in FIG. 9B, “Functions”is the parent palette window of “Numeric”.

[0137] In one embodiment, the parent palette window of the currentlydisplayed palette window may be displayed by selecting up navigationitem 220 without displaying or selecting from a menu. In one embodiment,single-clicking on up navigation item 220 may select the up navigationitem. In this example, selecting up navigation item 220 of palettewindow 200E may display the “Functions” palette window, which is theparent palette window of palette window 200E.

[0138]FIG. 9C illustrates using a forward navigation item 218 of palettewindow 200A to display a list 230E of, and optionally select from,previously displayed palette windows in a forward direction. In thisexample, list 230E may have been generated using the back navigationitem 216 of palette window 200E to back up through all previouslydisplayed windows in list 230C of FIG. 9A. In this case, selectingforward navigation item 218 of palette window 200A may display the“Graph” window 200B as illustrated in FIG. 5C, which would be the mostrecently displayed window in a forward direction.

[0139] Any of several methods may be used to display the list 230E. Inone embodiment, the user may move cursor 226 over item 218 andclick-hold (e.g. hold down the mouse button) for a short period untilthe list 230E is displayed. In one embodiment, the user may selectforward navigation menu item 219 to display the list 230E, for example,by clicking on it. The user may open one of the palette windows byselecting one of the items in list 230E. For example, the user mightmove the cursor over and click on “Numeric” in the list 230E to displaythe “Numeric” palette window 200E as illustrated in FIG. 9A.

[0140] In one embodiment, the palette windows in the list 230E may beshown in order from the most recently to the least recently displayedpalette window. In other embodiments, other methods of ordering palettewindows in list 230E may be used. Depending on the sequence ofnavigation that the user has previously performed, the palette windowsin the list may or may not be in a hierarchical, parent-childarrangement, where the immediate parent of the currently displayedpalette window is the most recently previously displayed palette window.If the user has previously navigated up and/or down other branches ofthe hierarchy or has used the search window 300 to “jump” to palettewindows in other hierarchies or branches, then the palette windows maynot be in a purely hierarchical arrangement in list 230E.

[0141] In one embodiment, the most recently previously displayed windowin a forward direction may be displayed by selecting forward navigationitem 218 without displaying or selecting from a menu. In one embodiment,single-clicking on forward navigation item 218 may select the forwardnavigation item and thus display the most recently previously displayedwindow in a forward direction.

[0142]FIG. 10—A hierarchical Organization of Palette Windows

[0143]FIG. 10 shows an exemplary hierarchical organization of palettewindows according to one embodiment. This example shows two hierarchiesof palette windows in a graphical programming environment. It is noted,however, that the various aspects of the present invention illustratedin this example may be applied to any computer-executable program orapplication that uses one or more hierarchies of palette windows.

[0144] The root of the first hierarchy is palette window 200A of FIG.5A. The first hierarchy may include several palette windows for addinguser interface elements to programs. The root of the firs hierarchy ispalette window 200H. The second hierarchy may include several palettewindows for adding function elements to programs.

[0145] Each palette window in the hierarchy may have zero or more childpalette windows. For example, palette windows 200B and 200E are childrenof palette window 200A, palette window 200J is a child of palette window200H, and palette window 200D (among others) has no children. In oneembodiment, a palette window may have at most one parent palette window.In another embodiment, a palette window may have more than one parentpalette window.

[0146] Search window 300 may be accessed from palette windows in eitherthe first or second hierarchy. From there, the user may navigatedirectly to any palette window in either hierarchy.

[0147] The following examples using the exemplary hierarchies of FIG. 10may be useful in distinguishing between the functionality of the backnavigation item 216, the forward navigation item 218, and the upnavigation item 220 as illustrated in FIGS. 9A-9C. A user may begin atroot palette window 200A. Initially, all lists of palette windowsdisplayed by navigation items may be empty. The user may open palettewindow 200B, then palette window 200C. At this point, the list ofpalette windows displayed by back navigation item 216 includes palettewindows 200A and 200B, the list of palette windows displayed by forwardnavigation item 218 is empty, and the list of palette windows displayedby up navigation item 218 includes palette windows 200A and 200B. Theuser may use the back navigation item to back up to palette window 200B.At this point, the list of palette windows displayed by back navigationitem 216 includes palette window 200A, the list of palette windowsdisplayed by forward navigation item 218 includes palette window 200C,and the list of palette windows displayed by up navigation item 218includes palette window 200A. The user may then use the back navigationitem to back up to palette window 200A. At this point, the list ofpalette windows displayed by back navigation item 216 is empty, the listof palette windows displayed by forward navigation item 218 includespalette windows 200A and 200B, and the list of palette windows displayedby up navigation item 218 is empty, as this is the root of the firsthierarchy.

[0148] In one embodiment, if a user navigates up and down severalbranches, then the lists of palette windows displayed by navigationitems may include palette windows from the different branches. Forexample, if the user next opened palette window 200E from palette window200A, and then opened palette window 200F from palette window 200E, thenthe list of palette windows displayed by back navigation item 216 mayinclude palette windows 200E, 200A, 200B, and 200C. If the user thenused the back navigation item 216 to return to palette window 200C, thenthe list of palette windows displayed by forward navigation item 218 mayinclude palette windows 200B, 200A, 200E, and 200F.

[0149] Multiple Navigation Mode Embodiment

[0150] In one embodiment of the invention, the hierarchy of palettewindows may have a plurality of different navigation modes, includingthe browser-based navigation mode described above with respect to FIGS.5A-10 as well as the prior art “cascading” navigation mode describedwith respect to FIGS. 4A-4C. For example, in one embodiment the user may“left click” on a palette window selection item in the palette toperform a browser based method as described above with respect to FIGS.5A-10, and may “right click” on a palette window selection item in thepalette to perform a cascading type navigation as shown in FIGS. 4A-4C.This allows the user the choice of selecting which type of palettenavigation method the user prefers. The user may also reprogram the leftand right mouse buttons of his/her mouse to configure the preferredmethod for the left or right mouse button, per the user's preference.

[0151]FIG. 11—Incorporating Program Elements from a Search Window

[0152]FIG. 11 illustrates an example of incorporating a located programelement from a search window into a window of a program being editedaccording to one embodiment. In this example, a user may search forprogram elements including the search string “Recta” as entered insearch field 302 of search window 300 as previously described for FIGS.7A-7B. A list 306 of text entries or strings that may include palettewindow titles and program element names may be displayed in the searchwindow 300. The user may select one or more program elements from thelist to be incorporated into one or more windows 400 of a programcurrently being edited, for example, graphical user interface windowsand block diagram windows. In this example, the user has selected theitem “Labeled Rectangular Button” from the list and has incorporated abutton of this type into a user interface window 400 of a programcurrently being edited.

[0153] In one embodiment, a program element may be incorporated into theprogram by selecting the item in list 306 and “dragging and dropping”the item on a window of the program. Other methods of incorporatingitems from list 306 into programs may be used. For example, in oneembodiment, a user may select an item in list 306 and a menu choice maythen be selected to add the selected item to a window of the program.

[0154]FIG. 12 Searching for, Locating and Incorporating Program Elements

[0155]FIG. 12 is a flowchart of a method of searching for, locating andincorporating program elements according to one embodiment. As indicatedat 500, a search window 300 may be displayed on a computer display onwhich a program is being edited in a graphical programming system. Inone embodiment, a user of the system may enter user input to cause thesearch window to be displayed. For example, a palette window may includea search item that the user may select to cause the search window to bedisplayed. The user may then enter search criteria into the searchwindow as indicated at 502. The system may then search for itemsindicated by the search criteria as indicated at 504. At 506, locateditems may be displayed. These located items may include one or moreitems related to program elements that may be incorporated in theprogram being edited to add functionality to the program. In oneembodiment, the items may be displayed in the search window, forexample, in a list of located elements as illustrated in FIG. 11.Optionally, the located items may be displayed in a different window.

[0156] The user may then select one or more located program elements andincorporate the one or more program elements in one or more windows ofthe program being edited as indicated at 508. In one embodiment, aprogram element may be incorporated into the program by selecting theitem in list 306 and “dragging and dropping” the item on a window of theprogram. Other methods of incorporating items from list 306 intoprograms may be used. For example, in one embodiment, a user may selectan item in list 306 and a menu choice may then be selected to add theselected item to a window of the program. Thus, the search resultsdisplayed in the search window may include program elements that can beselected and incorporated, such as through a drag and drop method,directly from the search window into a window of the program beingedited, in a similar manner to which a palette item (representing aprogram element) may be selected from its respective palette window andincorporated in a window of the program being edited.

[0157] Various embodiments may further include receiving, sending orstoring instructions and/or data implemented in accordance with theforegoing description upon a carrier medium. Generally speaking, acarrier medium may include storage media or memory media such asmagnetic or optical media, e.g., disk or CD-ROM, volatile or nonvolatilemedia such as RAM (e.g. SDRAM, RDRAM, SRAM, etc.), ROM, etc. as well astransmission media or signals such as electrical, electromagnetic, ordigital signals, conveyed via a communication medium such as networkand/or a wireless link.

[0158] Although the system and method of the present invention has beendescribed in connection with the preferred embodiment, it is notintended to be limited to the specific form set forth herein, but on thecontrary, it is intended to cover such alternatives, modifications, andequivalents, as can be reasonably included within the spirit and scopeof the invention as defined by the appended claims.

We claim:
 1. A computer-implemented method for adding program elementsto programs in a graphical user interface displayed on a computersystem, wherein the computer system includes a display, the methodcomprising: displaying one or more windows of a program currently beingedited on the display; displaying a search window on the display;receiving user input in the search window specifying a search criteria;identifying and displaying information regarding a plurality of possibleprogram elements in the search window in accordance with the searchcriteria user input; receiving user input selecting a program elementfrom the plurality of possible program elements; and incorporating theselected program element in a first window of the one or more windows ofthe program.
 2. The method of claim 1, wherein the plurality of possibleprogram elements are selectable by the user from the search window toadd functionality to the one or more windows of the program currentlybeing edited.
 3. The method of claim 1, wherein the plurality ofpossible program elements includes graphical user interface elementseach selectable by the user to add a particular graphical user interfacefunction associated with the particular graphical user interface elementto the program currently being edited.
 4. The method of claim 1, whereinthe plurality of possible program elements includes function elementseach selectable by the user to add a particular computer-executablefunction associated with the particular function element to the programcurrently being edited.
 5. The method of claim 1, wherein saidincorporating the selected program element in the first window comprisesreceiving user input to drag-and-drop the selected program element intothe first window.
 6. The method of claim 1, wherein the user input inthe search window specifying a search criteria includes a search string,and wherein said identifying and displaying information regarding theplurality of possible program elements in the search window inaccordance with the search criteria user input comprises: searching forthe search string in a plurality of text items comprising text itemsrelated to the program elements; and displaying one or more text itemslocated by said searching for the search string, wherein each of the oneor more located text items includes the search string, and wherein eachof the one or more located text items references one of the plurality ofpossible program elements.
 7. The method of claim 6, wherein the userinput selecting the program element from the plurality of possibleprogram elements specifies one of the one or more located text items,wherein the specified located text item references the selected programelement.
 8. The method of claim 1, wherein the graphical user interfacecomprises a hierarchy of palette windows, wherein one or more of thepalette windows in the hierarchy each comprise one or more palette itemsthat each represent one of the plurality of possible program elements.9. The method of claim 1, wherein the search window includes one or morenavigation items for navigating among the hierarchy of palette windows,wherein the navigation items include one or more of a forward navigationitem, a backward navigation item, and an up navigation item.
 10. Themethod of claim 1, wherein said displaying the search window isperformed in response to user input to the graphical user interface. 11.A computer-implemented method for adding program elements to programsusing a graphical user interface displayed on a computer system, whereinthe graphical user interface includes including a hierarch of palettewindows, and wherein the computer system includes a display, the methodcomprising: displaying on the display a first palette window from thehierarchy of palette windows, wherein one or more of the palette windowsin the hierarchy comprise palette items that are selectable by a user toadd functionality to one or more windows of a program currently beingedited in the graphical user interface, and wherein one or more of thepalette windows in the hierarchy of palette windows comprises a searchitem; receiving user input selecting a search item of the first palettewindow; displaying a search window in response to said user inputselecting the search item; receiving user input in the search windowspecifying a search criteria; identifying and displaying informationregarding a plurality of possible palette items in the search window inaccordance with the search criteria user input; receiving user inputselecting a palette item from the plurality of possible palette items;and incorporating the selected palette item in a first window of the oneor more windows of the program.
 12. The method of claim 11, wherein thepalette items include icons that are selectable by the user toincorporate graphical user interface elements in a graphical userinterface of the program currently being edited.
 13. The method of claim11, wherein the program currently being edited is a graphical program,and wherein the palette items include icons that are selectable by theuser to include function nodes in the graphical program.
 14. The methodof claim 11, wherein said incorporating the selected palette item in thefirst window comprises receiving user input to drag-and-drop theselected palette item into the first window.
 15. The method of claim 11,wherein the user input in the search window specifying the searchcriteria includes a search string, and wherein said identifying anddisplaying information regarding the plurality of possible palette itemsin the search window comprises: searching for the search string in aplurality of text items comprising text items related to the paletteitems; and displaying one or more text items located by said searchingin the search window, wherein each of the one or more located text itemsincludes the search string, and wherein each of the one or more locatedtext items references one of the plurality of possible palette items.16. The method of claim 15, wherein the user input selecting the paletteitem from the plurality of possible palette items specifies one of theone or more located text items in the search window, wherein thespecified located text item references the selected palette item. 17.The method of claim 11, wherein the plurality of possible palette itemsincludes palette items from the one or more of the palette windows inthe hierarchy comprising palette items.
 18. The method of claim 11,wherein the plurality of possible palette items includes palette itemsfrom a plurality of hierarchies of palette windows.
 19. The method ofclaim 11, wherein the search window includes one or more navigationitems for navigating among the hierarchy of palette windows, wherein thenavigation items include one or more of a forward navigation item, abackward navigation item, and an up navigation item.
 20. Acomputer-implemented method for searching a hierarchy of palette windowsin a graphical user interface displayed on a computer system, whereinthe computer system includes a display, the method comprising:displaying on the display a first palette window from the hierarchy ofpalette windows, wherein one or more of the palette windows in thehierarchy comprise palette items that are selectable by a user toinclude functionality in a program currently being edited in thegraphical user interface; receiving user input selecting a search itemof the first palette window; displaying a search window in response tosaid user input selecting the search item; receiving user input in thesearch window specifying a search criteria; identifying and displayinginformation regarding a plurality of possible palette windows in thesearch window in accordance with the search criteria; receiving userinput selecting a second palette window from the plurality of possiblepalette windows; and displaying the second palette window in response tosaid user input selecting the second palette window.
 21. The method ofclaim 20, wherein said user input in the search window specifying thesearch criteria includes a search string, and wherein said identifyingand displaying information regarding the plurality of possible palettewindows in the search window in accordance with the search criteria userinput comprises: searching for the search string in a plurality of textitems related to the palette windows in the hierarchy; and displayingone or more located text items in the search window, wherein each of theone or more located text items includes the search string, and whereineach of the one or more located text items references one of theplurality of possible palette windows.
 22. The method of claim 21,wherein the user input selecting the new palette window from theplurality of possible palette windows specifies one of the one or morelocated text items in the search window, wherein the specified locatedtext item references the new palette window.
 23. The method of claim 20,wherein the plurality of possible palette windows includes palettewindows from a plurality of hierarchies of palette windows.
 24. Themethod of claim 20, wherein the search window includes one or morenavigation items for navigating among the hierarchy of palette windows,and wherein the method further comprises: prior to said displaying thesearch window in response to said user input selecting the search item:receiving user input selecting a navigation item displayed on the searchwindow; and displaying a previously displayed palette window in thehierarchy of palette windows in response to said user input selectingthe navigation item.
 25. The method of claim 24, wherein the navigationitem is one of a forward navigation item, a back navigation item, and anup navigation item.
 26. The method of claim 24, wherein the navigationitem is a back navigation item operable when selected to display a mostrecently previously displayed palette window in a backward direction.27. The method of claim 24, wherein the navigation item is a forwardnavigation item operable when selected to display a most recentlypreviously displayed palette window in a forward direction.
 28. Themethod of claim 24, wherein the navigation item is an up navigation itemoperable when selected to display a parent palette window of the firstpalette window, regardless of the most recently previously displayedpalette window.
 29. The method of claim 20, wherein the palette itemsinclude icons that are selectable by the user to incorporate graphicaluser interface elements and function nodes in a graphical user interfaceof the program.
 30. The method of claim 20, wherein the program is agraphical program, and wherein the palette items include icons that areselectable by the user to add functionality to the graphical program.31. The method of claim 20, wherein the information regarding theplurality of possible palette windows displayed in the search windowincludes information regarding one or more possible program elements,wherein the information regarding the one or more possible programelements is selectable by the user from the search window to addfunctionality to the program.
 32. A system comprising: a memoryconfigured to store program instructions; an input device configured toreceive user input; a display device; and a processor configured to readthe program instructions from the memory and to execute the programinstructions, wherein, in response to execution of the programinstructions, the processor is operable to: display on the display oneor more windows of a program currently being edited in a graphical userinterface; display a search window on the display; receive user input inthe search window specifying a search criteria; identify and displayinformation regarding a plurality of possible program elements in thesearch window in accordance with the search criteria user input; receiveuser input selecting a program element from the plurality of possibleprogram elements; and incorporate the selected program element in afirst window of the one or more windows of the program.
 33. The systemof claim 32, wherein the plurality of possible program elements areselectable by the user from the search window to add functionality tothe one or more windows of the program currently being edited.
 34. Thesystem of claim 32, wherein the plurality of possible program elementsincludes graphical user interface elements each selectable by the userto add a particular graphical user interface function associated withthe particular graphical user interface element to the program currentlybeing edited.
 35. The system of claim 32, wherein the plurality ofpossible program elements includes function elements each selectable bythe user to add a particular computer-executable function associatedwith the particular function element to the program currently beingedited.
 36. The system of claim 32, wherein, in said incorporating theselected program element in the first window, the processor is furtheroperable to: receive user input to drag-and-drop the selected programelement into the first window.
 37. The system of claim 32, wherein theuser input in the search window specifying a search criteria includes asearch string, and wherein, in said identifying and displayinginformation regarding the plurality of possible program elements in thesearch window, the processor is further operable to: search for thesearch string in a plurality of text items comprising text items relatedto the program elements; and display one or more text items located bysaid searching for the search string, wherein each of the one or morelocated text items includes the search string, and wherein each of theone or more located text items references one of the plurality ofpossible program elements; wherein the user input selecting the programelement from the plurality of possible program elements specifies one ofthe one or more located text items, wherein the specified located textitem references the selected program element.
 38. The system of claim32, wherein the graphical user interface comprises a hierarchy ofpalette windows, wherein one or more of the palette windows in thehierarchy each comprise one or more palette items that each representone of the plurality of possible program elements.
 39. The system ofclaim 32, wherein the search window includes one or more navigationitems for navigating among the hierarchy of palette windows, wherein thenavigation items include one or more of a forward navigation item, abackward navigation item, and an up navigation item.
 40. A systemcomprising: a memory configured to store program instructions; an inputdevice configured to receive user input; a display device; and aprocessor configured to read the program instructions from the memoryand to execute the program instructions, wherein, in response toexecution of the program instructions, the processor is operable to:display on the display a first palette window from a hierarchy ofpalette windows of a graphical user interface, wherein one or more ofthe palette windows in the hierarchy comprise palette items that areselectable by a user to add functionality to one or more windows of aprogram currently being edited in the graphical user interface, andwherein one or more of the palette windows in the hierarchy of palettewindows comprises a search item; receive user input selecting a searchitem of the first palette window; display a search window in response tosaid user input selecting the search item; receive user input in thesearch window specifying a search criteria; identify and displayinformation regarding a plurality of possible palette items in thesearch window in accordance with the search criteria user input; receiveuser input selecting a palette item from the plurality of possiblepalette items; and incorporate the selected palette item in a firstwindow of the one or more windows of the program.
 41. The system ofclaim 40, wherein the program currently being edited is a graphicalprogram, wherein the palette items include icons that are selectable bythe user to incorporate graphical user interface elements in a graphicaluser interface of the program currently being edited, and wherein thepalette items farther include icons that are selectable by the user toinclude function nodes in the graphical program.
 42. The system of claim40, wherein, in said incorporating the selected palette item in thefirst window, the processor is further operable to: receive user inputto drag-and-drop the selected palette item into the first window. 43.The system of claim 40, wherein the user input in the search windowspecifying the search criteria includes a search string, and wherein, insaid identifying and displaying information regarding the plurality ofpossible palette items in the search window, the processor is furtheroperable to: search for the search string in a plurality of text itemscomprising text items related to the palette items; and display one ormore text items located by said searching in the search window, whereineach of the one or more located text items includes the search string,and wherein each of the one or more located text items references one ofthe plurality of possible palette items; wherein the user inputselecting the palette item from the plurality of possible palette itemsspecifies one of the one or more located text items in the searchwindow, wherein the specified located text item references the selectedpalette item.
 44. A system comprising: a memory configured to storeprogram instructions; an input device configured to receive user input;a display device; and a processor configured to read the programinstructions from the memory and to execute the program instructions,wherein, in response to execution of the program instructions, theprocessor is operable to: display on the display a first palette windowfrom a hierarchy of palette windows in a graphical user interface,wherein one or more of the palette windows in the hierarchy comprisepalette items that are selectable by a user to include functionality ina program; receive user input selecting a search item of the firstpalette window; display a search window on the display in response tosaid user input selecting the search item; receive user input in thesearch window specifying a search criteria; identify and displayinginformation regarding a plurality of possible palette windows in thesearch window in accordance with the search criteria; receive user inputselecting a second palette window from the plurality of possible palettewindows; and display the second palette window on the display inresponse to said user input selecting the second palette window.
 45. Thesystem of claim 44, wherein said user input in the search windowspecifying the search criteria includes a search string, and wherein, insaid identifying and displaying information regarding the plurality ofpossible palette windows in the search window in accordance with thesearch criteria user input, the processor is further operable to: searchfor the search string in a plurality of text items related to thepalette windows in the hierarchy; and display one or more located textitems in the search window, wherein each of the one or more located textitems includes the search string, and wherein each of the one or morelocated text items references one of the plurality of possible palettewindows; wherein the user input selecting the new palette window fromthe plurality of possible palette windows specifies one of the one ormore located text items in the search window, wherein the specifiedlocated text item references the new palette window.
 46. The system ofclaim 44, wherein the search window includes one or more navigationitems for navigating among the hierarchy of palette windows, andwherein, prior to said displaying the search window in response to saiduser input selecting the search item, the processor is further operableto: receive user input selecting a navigation item displayed on thesearch window; and display a previously displayed palette window in thehierarchy of palette windows in response to said user input selectingthe navigation item; wherein the navigation item is one of a forwardnavigation item, a back navigation item, and an up navigation item. 47.The system of claim 44, wherein the program is a graphical program, andwherein the palette items include icons that are selectable by the userto add functionality to the graphical program.
 48. The system of claim44, wherein the information regarding the plurality of possible palettewindows displayed in the search window includes information regardingone or more possible program elements, wherein the information regardingthe one or more possible program elements is selectable by the user fromthe search window to add functionality to the program.
 49. A carriermedium comprising program instructions, wherein the program instructionsare computer-executable to implement: displaying one or more windows ofa program currently being edited in graphical user interface displayedon a computer system; displaying a search window on the computer system;receiving user input in the search window specifying a search criteria;identifying and displaying information regarding a plurality of possibleprogram elements in the search window in accordance with the searchcriteria user input; receiving user input selecting a program elementfrom the plurality of possible program elements; and incorporating theselected program element in a first window of the one or more windows ofthe program; wherein the plurality of possible program elements areselectable by the user from the search window to add functionality tothe one or more windows of the program currently being edited.
 50. Thecarrier medium of claim 49, wherein said incorporating the selectedprogram element in the first window comprises receiving user input todrag-and-drop the selected program element into the first window. 51.The method of claim 49, wherein the graphical user interface comprises ahierarchy of palette windows, wherein one or more of the palette windowsin the hierarchy each comprise one or more palette items that eachrepresent one of the plurality of possible program elements.
 52. Acarrier medium comprising program instructions, wherein the programinstructions are computer-executable to implement: displaying a firstpalette window from a hierarchy of palette windows in a graphical userinterface, wherein one or more of the palette windows in the hierarchycomprise palette items that are selectable by a user to addfunctionality to one or more windows of a program currently being editedin the graphical user interface, and wherein one or more of the palettewindows in the hierarchy of palette windows comprises a search item;receiving user input selecting a search item of the first palettewindow; displaying a search window in response to said user inputselecting the search item; receiving user input in the search windowspecifying a search criteria; identifying and displaying informationregarding a plurality of possible palette items in the search window inaccordance with the search criteria user input; receiving user inputselecting a palette item from the plurality of possible palette items;and incorporating the selected palette item in a first window of the oneor more windows of the program.
 53. The carrier medium of claim 52,wherein said incorporating the selected palette item in the first windowcomprises receiving user input to drag-and-drop the selected paletteitem into the first window.
 54. A carrier medium comprising programinstructions, wherein the program instructions are computer-executableto implement: displaying a first palette window from a hierarchy ofpalette windows in a graphical user interface, wherein one or more ofthe palette windows in the hierarchy comprise palette items that areselectable by a user to include functionality in a program currentlybeing edited in the graphical user interface; receiving user inputselecting a search item of the first palette window; displaying a searchwindow in response to said user input selecting the search item;receiving user input in the search window specifying a search criteria;identifying and displaying information regarding a plurality of possiblepalette windows in the search window in accordance with the searchcriteria; receiving user input selecting a second palette window fromthe plurality of possible palette windows; and displaying the secondpalette window in response to said user input selecting the secondpalette window; wherein the information regarding the plurality ofpossible palette windows displayed in the search window includesinformation regarding one or more possible program elements, wherein theinformation regarding the one or more possible program elements isselectable by the user from the search window to add functionality tothe program.